// class A {

//     // n: number | null;

//     // private privateNumber: number[] = [1, 2];
//     // public arr1: number[] = [1, 2];
//     // public arr2: Array<boolean> = [false, true];

//     // Do(): void {
//     //     console.log(`Do${1}`);
//     // }

//     // valueof(a: A) {
//     //     return this.n = a.n;
//     // }
// }

// enum EA {
//     A = 0,
//     B = 1,
//     C = 2
// }

// let a = new A();

// a.arr1 = [3,4];
// console.log(a.arr1);
// console.log(a.arr2);

// console.log(a == undefined);
// console.log(a == null);
// a = null;
// console.log(a == null
// console.log(a == undefined);

// console.log(EA.B);
// console.log(EA[EA.B]);

// a.n = 1;
// // a = null

// if (a?.n == null) {
//     console.log(true)
// }
// else {
//     console.log(false)
// }

// enum AType {
//     A = 0,
//     B = 1,
//     C = 2
// }

// let n = 1;

// let nType = n as AType;
// console.log(AType.A)

// class A {
//     public n1 = 1;
//     public b: B;
// }

// class B {
//     public n2 = 2;

// }

// let e: any = new B();

// let a: A = e as A | undefined;

// let c: bigint = 1n;

// console.log(a.n1);

// var timestamp1 = Date.parse(new Date().toString()) / 1000;

// let string = "";

// if (string) {
//     console.log("true");
// }
// else {
//     console.log("false");
// }


// function Do(a: A) {
//     if (a) {

//         console.log(a.n1);
//         console.log(a);
//     }
// }

// Do(a);

// function A(n: number) {
//     console.log("A 被调用, n : " + n);

//     return n + 1;
// }

// function B(func: Function) {
//     let n: number = func(1);

//     console.log("B 被调用, n : " + n);

// }


// B(A);

// let a: number | null|undefined = 0;
// a=undefined;
// console.log(a);

// if (a == null) {
// console.log(1);
// }



// /// 获取当前毫秒级时间戳
// function GetCurMillisecondTimestamps(): number {
//     var timestamp = new Date().getTime();

//     return timestamp;
// }

// /// 获取当前秒级时间戳
// function GetCurSecondTimestamps(): number {
//     var timestamp = Math.ceil(GetCurMillisecondTimestamps() / 1000)

//     return timestamp;
// }

// let last = 1637337414;

// let cur = GetCurSecondTimestamps();

// let dif = cur - last;

// console.log(cur/86400);
// console.log(last/86400);

// let str = "0";

// let n = Number.parseInt(str);

// console.log(n);
// if (!n && n!=0) {
//     console.log("不成立");
// } else {
//     console.log("成立");
// }

interface ISort {
    GetSortID(): number;
}

class A implements ISort {

    public id: number;

    public GetSortID(): number {
        return this.id;
    }

    public constructor(i: number) {
        this.id = i;
    }

    public toString() {
        return this.id.toString();
    }

}

class B implements ISort {

    public index: number;

    public GetSortID(): number {
        return this.index;
    }
    public constructor(i: number) {
        this.index = i;
    }

    public toString() {
        return this.index.toString();
    }
}

function Sort(list: ISort[]) {
    list.sort((a: ISort, b: ISort) => a.GetSortID() - b.GetSortID());
}

function LogList(list: any[]) {
    let log = "";
    for (let obj of list) {
        log += obj.toString() + " ";
    }
    console.log(log)
}

let aList = [new A(8), new A(1), new A(7), new A(20), new A(14), new A(6)];
let bList = [new B(4), new B(5), new B(7), new B(32), new B(19), new B(25)];

Sort(aList)
Sort(bList)

LogList(aList)
LogList(bList)


